package com.fand.platform.configuration.service;

import java.util.List;
import java.util.Map;

import com.fand.cache.support.CacheEvictSupport;
import com.fand.dto.PaginationDto;
import com.fand.platform.configuration.dto.VariableDto;

/**
 * 变量服务
 * 
 * @author yaoHT
 */
public interface VariableService extends CacheEvictSupport {
	String BEAN_ID = "com.fand.platform.configuration.service.VariableService";

	String CACHE_NAME = VariableService.BEAN_ID + "Cache";

	/**
	 * 保存:变量
	 * 
	 * @param saveVariable
	 *            变量对象
	 * 
	 * @return 变量对象
	 */
	VariableDto saveVariableByIdOrCodeForVariable(VariableDto saveVariable);

	/**
	 * 保存:变量
	 * 
	 * @param saveVariable
	 *            变量对象
	 * 
	 * @return 变量对象
	 */
	VariableDto saveVariableBy2ForVariable(VariableDto saveVariable);

	/**
	 * 删除:变量
	 * 
	 * @param deleteVariable
	 *            变量对象
	 * 
	 * @return 影响行数
	 */
	int deleteVariableBy1(VariableDto deleteVariable);

	/**
	 * 删除:变量
	 * 
	 * @param deleteVariable
	 *            变量对象
	 * 
	 * @return 影响行数
	 */
	int deleteVariableByIds(VariableDto deleteVariable);

	/**
	 * 设置:变量
	 * 
	 * @param setVariable
	 *            变量对象
	 * 
	 * @return 影响行数
	 */
	int setVariableBy1(VariableDto setVariable);

	/**
	 * 设置:变量
	 * 
	 * @param setVariable
	 *            变量对象
	 * 
	 * @return 影响行数
	 */
	int setVariableBy2(VariableDto setVariable);

	/**
	 * 读取:变量
	 * 
	 * @param readVariable
	 *            变量对象
	 * 
	 * @return 变量对象
	 */
	Integer readVariableByTypeIdEqCodeNqIdForInteger(VariableDto readVariable);

	/**
	 * 读取:变量
	 * 
	 * @param readVariable
	 *            变量对象
	 * 
	 * @return 变量对象
	 */
	Integer readVariableBy2ForInteger(VariableDto readVariable);

	/**
	 * 读取:变量
	 * 
	 * @param readListVariable
	 *            变量对象
	 * 
	 * @return 变量对象集合
	 */
	List<Integer> readListVariableBy1(VariableDto readVariable);

	/**
	 * 读取:变量
	 * 
	 * @param readListVariable
	 *            变量对象
	 * 
	 * @return 变量对象集合
	 */
	List<Integer> readListVariableBy2(VariableDto readVariable);

	/**
	 * 查询:变量
	 * 
	 * @param getVariable
	 *            变量对象
	 * 
	 * @return 变量对象
	 */
	VariableDto getVariableBy1(VariableDto getVariable);

	/**
	 * 查询:变量
	 * 
	 * @param getVariable
	 *            变量对象
	 * 
	 * @return 变量对象
	 */
	VariableDto getVariableById(VariableDto getVariable);

	/**
	 * 查询:变量
	 * 
	 * @param findVariable
	 *            变量对象
	 * 
	 * @return 变量对象集合
	 */
	List<VariableDto> findVariableBy1(VariableDto findVariable);

	/**
	 * 查询:变量
	 * 
	 * @param findVariable
	 *            变量对象
	 * 
	 * @return 变量对象集合
	 */
	List<VariableDto> findVariableBy2(VariableDto findVariable);

	/**
	 * 查询：变量
	 * 
	 * @param typeCo
	 *            类型编号
	 * 
	 * @return 变量映射
	 */
	Map<String, String> getVariableByTypeCoForMap(String typeCo);

	/**
	 * 分页:变量
	 * 
	 * @param paginationVariable
	 *            变量对象
	 * 
	 * @return 变量分页对象
	 */
	PaginationDto<VariableDto> paginationVariableBy1ForVariableList(VariableDto paginationVariable);

	/**
	 * 分页
	 * 
	 * @param paginationVariable
	 *            变量对象
	 * 
	 * @return 变量分页对象
	 */
	PaginationDto<Map<String, Object>> paginationVariableBy1ForMapList(VariableDto paginationVariable);
}